約 6,141,102 件
https://w.atwiki.jp/java_pro/pages/28.html
import java.io.*; public class Copy1_3 { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); int n = Integer.parseInt(line); while (n != 0){ System.out.println(n * 10); line = reader.readLine(); n = Integer.parseInt(line); } System.out.println("終了します"); } catch (IOException e){ System.out.println(e); } } }
https://w.atwiki.jp/penta2/pages/11.html
GLANTANKへJavaを導入 Javaの実行環境を導入しようとするも アーキテクチャがarmであるためなかなか導入できず・・・ 途方にくれているとfree-javaの 玄箱への導入記録を発見したので 早速試してみた(゜o゜)!! 参考ページ chicken developer http //www22.atwiki.jp/anthony/pages/17.html 1.まずはsource.listにcontrib non-freeを追加 GLANTANK /# vi /etc/apt/sources.list deb http //ftp.jp.debian.org/debian etch main contrib non-free deb-src http //ftp.jp.debian.org/debian etch main contrib non-freedeb http //security.debian.org etch/updates main contrib non-free deb-src http //security.debian.org etch/updates main contrib non-free 2.続いてapt-getするためupdateの実行 GLANTANK /# apt-get update 3.あるかな~ということで確認 GLANTANK /# apt-cache search free-java-sdk free-java-sdk - Complete Java SDK environment consisting of free Java tools 4.あることが確認できたのでインストール GLANTANK /# apt-get install free-java-sdk 5.Javaが入っているかの確認 GLANTANK /# java -version SableVM version 1.13 compile date and time 2006-09-09 15 34 20 UTC gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13) real life brokenness features enabled signal based exception detection copying garbage collection bidirectional object layout direct-threaded interpreter おお!入ってる・・・ 今回はここまで
https://w.atwiki.jp/java_pro/pages/34.html
import java.io.*; public class CountSan { public static void main(String[] args){ for (int i = 3; i = 99; i = i + 3){ System.out.println(i); } } }
https://w.atwiki.jp/java_pro/pages/32.html
import java.io.*; public class SumNumbers1 { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); int n = Integer.parseInt(line); int sum = n; line = reader.readLine(); n = Integer.parseInt(line); sum = sum + n; line = reader.readLine(); n = Integer.parseInt(line); sum = sum + n; line = reader.readLine(); n = Integer.parseInt(line); sum = sum + n; line = reader.readLine(); n = Integer.parseInt(line); sum = sum + n; System.out.println(sum); } catch (IOException e){ System.out.println(e); } } }
https://w.atwiki.jp/java_syn/pages/12.html
java勉強
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/java_pro/pages/29.html
import java.io.*; public class CountNumber { public static void main(String[] args){ for (int i = 1; i = 100; i++){ System.out.println(i); } } }
https://w.atwiki.jp/limixp/pages/19.html
Java開発環境のインストールが済んだらさっそくプログラムを書いてみます. 本当にインストールできているかの確認にもなります. Hello World!プログラム プログラムから画面上に「Hello World!」と表示させるプログラムをJavaで作ります. プログラムを書くためにテキストエディタを用意する必要があります。Windows標準のメモ帳(notepad.exe)でも構いません. オススメなテキストエディタはTeraPadやSakura Editorが挙げられます. 仕様は以下の通りとします. クラス名は HelloWorld . 「Hello World!」を標準出力に出力する greetWorld()メソッド. HelloWorldクラスのインスタンスを生成し,greetWorld()メソッドを呼び出すmain()メソッド. public class HelloWorld{ public HelloWorld(){ //コンストラクタ } public void greetWorld(){ System.out.println("Hello World!"); } public static void main(String[] args){ HelloWorld instance = new HelloWorld(); instance.greetWorld(); } } これをHelloWorld.javaというファイル名で保存します. 保存先はC ドライブの直下に java というディレクトリを作成し, C \java\に保存します. 保存後,このプログラムをコンパイル~実行は以下のようにします. コマンドプロンプトを起動します. HelloWorld.javaのファイルがあるディレクトリにcdコマンドで移動します.cd C \java\ HelloWorld.javaをjavacコマンドでコンパイルします.javac HelloWorld.java するとHelloWorld.classというバイトコード(クラスファイル)が生成されます.dirコマンドで確認できます. クラスファイルをjavaコマンドで実行します.java HelloWorld 「Hello World!」と表示された成功です. もしjavacコマンドでエラーが出た場合はソースに誤りがあります. エラーの内容からソースの内容を良く確認し,コンパイルしなおしてください. 以上で最初のJavaプログラムは終わりです. トップページ
https://w.atwiki.jp/loveubuntu/pages/22.html
【緊急速報】 OracleJavaで Java6update31以外を使っている方は脆弱性回避のため速やかにJava6u31以降に変更して下さい。 参考文献 Javaの定例セキュリティアップデートが公開、多数の深刻な脆弱性に対処(ITmediaエンタープライズ 2012-02-16) Javaについて Javaとは(広い意味で)オペレーティングシステムに依存しないプログラミング開発・実行環境です。Windows、OSX、Linuxでの環境が用意されていますので、基本的にJavaアプリはLinuxでも動きます。 Ubuntuで使えるJavaには現在2つの流れが有り、一つがクローズドなOracleJava、もう一つがオープンソースのOpenJDKです。現在Ubuntuで自動インストール出来るのはOpenJDKのみで、OracleJavaは手動で導入しなければいけません。 OpenJDKは簡単に導入(ソフトウェアセンターからインストール)できますが、動かないJavaアプリがあったりするので 手動で OracleJavaを入れる人も多いです。そこでここでは手動で OracleJavaを入れる方法からフォントの文字化け対策などを書いていきたいと思います。 現在のOracleJavaの最新バージョンは1.6.0_32です。(2012-05-08確認 【公式サイトダウンロードページ 】) 動作している Javaのバージョンを確認したい時は、端末から「java -version」と打ち込んで下さい。 付記 OpenJDKのインストール。 ソフトウェアセンター(あるいはSynaptic)から「default-java」あるいは「openjdk-6-jre」を検索してインストールするのが一番簡単です。こちらは自動アップデートされますので、Linuxに慣れていない方はこちらを使用することを強くお勧めします。 OracleJavaは安全面を考えて常に最新版を導入するようにして下さい。 Oracle Java 手動インストール(この時点での最新版はv6u31でしたが、現在の最新版に読み替えて作業して下さい。) Javaは広範囲で使用されているために脆弱性が見つかるとすぐに攻撃される危険な存在であるにも関わらず、バックグラウンドで動作しているためユーザにとって使用している意識が低く、アップデートを放置している方も多いと聞きます。重大なトラブルを避けるためにも、セキュリティアップデートは必ず行い常に最新版を使用するように心がけて下さい。 別バージョンのJava入れたけど前のバージョンのまま変わんないね困ったよ(全バージョン) 端末での操作が好きな方は 「sudo update-alternatives --config java」 で、GUIが好きな方は galternatives をインストールして実行、javaの項目を探してバージョンを変更して下さい。 Javaアプリが文字化けするのでフォントを変えたい(全バージョン、oracle(sun)-java) Java本体のディレクトリを探して(例えば /usr/lib/jvm の中とか)、その下の lib/fontsの中に fallback というディレクトリを作成fallbackの中に入り、好きなフォントのリンクを置き、mkfontdir と mkfontscale というコマンドを打ち込むとフォントが変わります。
https://w.atwiki.jp/java_pro/pages/21.html
import java.io.*; public class Break { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { while (true){//無限ループ String line = reader.readLine();//標準入力から一行取得 if (line == null){//nullなら繰返しを抜ける break; } System.out.println(line);//画面に取得した文字列を表示 } System.out.println("終了します。"); } catch (IOException e){ System.out.println(e); } } }